#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include "stu_mis.h"

void stu_change()
{
    struct student s;
    int num;

    while (1)
    {
        printf("请输入要修改的学生的学号：");
        if (1 == scanf("%d", &num))
        {
            if (num < STU_NUM_MIN || num > STU_NUM_MAX)
            {
                printf("输入范围错误，请从新输入！\n");
                continue;
            }
            break;
        }
        printf("输入错误，请从新输入！\n");
        fflush(stdin); // 刷新输入缓冲区
    }

    FILE *fp = fopen("student_info.txt", "r+");
    while (fread(&s, sizeof(s), 1, fp) == 1)
    {
        if (s.num == num)
        {
            while (1)
            {
                printf("学生原学号：%d\n", s.num);
                printf("请输入学生学号：");
                if (1 == scanf("%d", &s.num))
                {
                    if (s.num < STU_NUM_MIN || s.num > STU_NUM_MAX)
                    {
                        printf("输入范围错误，请从新输入！\n");
                        continue;
                    }
                    if ((check_num(s.num) == 1) && (s.num != num))
                    {
                        printf("输入学号重复，请从新输入！\n");
                        continue;
                    }
                    break;
                }
                printf("输入错误，请从新输入！\n");
                fflush(stdin); // 刷新输入缓冲区
            }

            while (1)
            {
                printf("学生原姓名：%s\n", s.name);
                printf("请输入学生姓名：");
                if (1 == scanf("%s", s.name))
                {
                    break;
                }
                printf("输入错误，请从新输入！\n");
                fflush(stdin); // 刷新输入缓冲区
                // 文件描述符 0 通常是标准输入（STDIN），1 是标准输出（STDOUT），2 是标准错误输出（STDERR）。
            }

            while (1)
            {
                printf("学生原性别：%s\n", s.sex);
                printf("请输入学生性别（男OR女）：");
                if (1 == scanf("%s", s.sex))
                {
                    if ((strcmp(s.sex, "男") != 0) && (strcmp(s.sex, "女") != 0))
                    {
                        printf("输入错误，请重新输入！\n");
                        continue;
                    }
                    break;
                }
                printf("输入错误，请从新输入！\n");
                fflush(stdin); // 刷新输入缓冲区
            }
            while (1)
            {
                printf("学生原学号：%f\n", s.grades);
                printf("请输入学生成绩：");
                if (1 == scanf("%f", &s.grades))
                {
                    break;
                }
                printf("输入错误，请从新输入！\n");
                fflush(stdin); // 清空输入缓冲区
            }

            while(fseek(fp, -sizeof(s), SEEK_CUR) == 0)
            {
                fwrite(&s, sizeof(s), 1, fp);
                printf("change scecces");
                fclose(fp);
    		return;
            }
        }
    }
	return;
}
